A lazy iterator computes values on demand rather than precomputing all values, saving memory and enabling infinite sequences. Example: generating Fibonacci numbers.
Lazy iterators delay computation until values are requested, processing one element at a time. This is critical for large or infinite data sets because it avoids loading everything into memory. For example, a Fibonacci sequence generator using an iterator only computes the next number when next() is called, not all numbers upfront.